var express = require('express');
var fs = require('fs');
var mysql = require('mysql');
var ejs = require('ejs');

var router = express.Router();

// 连接MySQL数据库
var client = mysql.createConnection({
    host: 'localhost',
    port: "3306",
    user: 'root',
    password: '123456',
    database: 'library'
});

// 判断数据库是否连接成功
client.connect(function (err) {
    if (err) {
        console.log('[query] - :' + err);
        return;
    }
    console.log('[connection connect]  MySQL数据库连接成功!');
});

// 显示登录列表
router.get('/', function (request, response) {
    response.render('login/login.ejs');
});

// 添加登录处理逻辑
router.post('/', function (request, response) {
    // 对输入的用户名、密码、昵称进行基本的验证，这里简单示例只判断非空，实际可添加更严格规则
    if (!request.body.username || !request.body.password) {
        response.status(400).send('用户名和密码不能为空');
        return;
    }

    // 对输入的内容进行转义，防止SQL注入（简单示例，实际可使用更专业的库来处理）
    var escapedUsername = mysql.escape(request.body.username);
    var escapedPassword = mysql.escape(request.body.password);
    var escapedNikename = request.body.nikename ? mysql.escape(request.body.nikename) : null;

    // 先查询用户是否存在
    client.query('select * from user where username =' + escapedUsername + 'and password =' + escapedPassword, function (err, results) {
        if (err) {
            console.log('[query error] - :' + err);
            response.status(500).send('数据库查询出错');
            return;
        }

        if (results.length > 0) {
            console.log(results);
            response.render('home', {
                data: results[0]
            });
        } else {

            // 如果不存在，再判断昵称是否有值，若没有给个默认昵称之类的处理（这里简单示例）
            if (!escapedNikename) {
                escapedNikename = mysql.escape('默认昵称_' + request.body.username);
            }
            client.query('insert into user (username, password,nikename) VALUES (' + escapedUsername + ',' + escapedPassword + ',' + escapedNikename + ')', function (insertErr) {
                if (insertErr) {
                    console.log('[insert error] - :' + insertErr);
                    response.status(500).send('注册用户插入数据库出错');
                    return;
                }
                response.render('home', {
                    data: {
                        nikename: "新注册用户" + request.body.username
                    }
                });
            });
        }
    });
});

module.exports = router;